An Application Development Framework (ADF) provides a set of pre-defined code/data modules that can be directly/indirectly used in the development of an application. An ADF may also provide tools such as an IDE (integrated development environment), code generators, debuggers, etc. which facilitates a developer in coding/implementing the desired logic of the application in a faster/simpler manner.
In general, an ADF simplifies development of applications by providing re-usable components and integrated development environments, which application developers can use to define user interfaces and application logic by, for example, selecting components to perform desired tasks and defining the appearance, behavior, and interactions of the selected components. Some ADFs are based on a model-view-controller design pattern that promotes loose coupling and easier application development and maintenance. Oracle Application Development Framework is one example of an ADF that utilizes this design pattern.
Oracle ADF includes libraries of standards-based Java Server Faces (JSF) components with built-in HTML5 and Ajax functionality. With these components, web deployed user interfaces can be developed with a level of functionality and interactivity previously reserved for thick-client applications. The components offer data interaction, data visualization, and encapsulated browser side operations in a set of easy to use components that makes rich client application development easier than ever. Oracle ADF further provides a data-binding framework that simplifies binding UI to business services through a simple drag and drop operations in the IDE. This is done while still keeping the independence of the business service from consuming interfaces. With the framework, the UI developer is insulated from the underlying implementation of the business service layer. This makes the process of building the UI truly decoupled from the implementation of the business service layer, better positioning the application for implementation in a service-oriented architecture.
Most modern computer applications, including Oracle ADF, incorporate actions that are carried out in manners that are not at the direct invocation of users. One example is the AUTOSAVE (or auto-save) function, in which an application periodically saves any work done by a user. The auto-save function allows users to continue working with more confidence that if the user's computer system or the application itself fails before the user has had a chance to perform an explicit save of the data, the majority of the user's work will be preserved.
While these autonomous actions are useful in, for example, preserving work that might be lost over a system failure, or saving the user from extra keystrokes, or keeping a screen display free from unnecessary clutter, they may have disadvantages in other respects. One main issue with auto-save is that its invocation removes the ability for a user to undo an operation or redo an operation. In most computer applications, it is usual for the application to maintain a history of actions performed by the user, so that they can be reversed. It is sometimes possible in these environments to step back through a number of actions by repeated use of the UNDO option. Although this function of undoing user actions is useful, current methods are typically limited to a certain number of undo operations in an undo history. Furthermore, the lifetime of the UNDO history usually is only during the user session.
Accordingly, what is desired is to solve problems relating to UNDO histories in applications that employ auto-save, some of which may be discussed herein. Additionally, what is desired is to reduce drawbacks relating to modern cloud-based applications that employ auto-save functionality, some of which may be discussed herein.